#ifndef _DB_MSG_H_
#define _DB_MSG_H_
#include "db_api.h"

typedef enum tagMSGID
{
	MSGID_QUIT = 0,
	MSGID_DB_RESET,
	MSGID_MOUNT,
	MSGID_UNMOUNT,
	MSGID_SET_LIKE,
	MSGID_DELETE_FILE,
	MSGID_ADD_WAVE,
	MSGID_ADD_TAG,
	MSGID_READ_TYPE,
	MSGID_READ_LIKE,
	MSGID_READ_FOLDER,
	MSGID_READ_PL,
	MSGID_READ_ALBUMS,
	MSGID_READ_AUDIO_BY_ALBUM,
	MSGID_READ_ALBUM,
	MSGID_READ_ARTISTS,
	MSGID_READ_AUDIO_BY_ARTIST,
	MSGID_READ_ARTIST,
	MSGID_GET_STATE,

	MSGID_NORESPONSE = 99,
}MSGID;

typedef struct tagDBMSG
{
	MSGID id;
	union{
		struct{
			int state;
			int res;
		}reponse;
		struct{
			char * path;
			int like;
			unsigned int tag;
		}write;
		struct{
			char * str;
			int type_like;
			unsigned int offset;
			RECORD * records;
			RECITEMUTF8 * fname;
			RECITEMUTF8 * albums;
			RECITEMUTF8 * artists;
			unsigned int cnt;
		}read;
	}u;
}DBMSG;

int save_content();
int load_content();
int response(MSGID msgid, int res);

int init_check(void);
int on_quit(DBMSG * msg);
int on_db_reset(DBMSG * msg);
int on_get_state(DBMSG * msg);
int on_mount(DBMSG * msg);
int on_unmount(DBMSG * msg);
int on_set_like(DBMSG * msg);
int on_set_like_index(void);
int on_delete_file(DBMSG * msg);
int on_delete_file_index(void);
int on_add_wave(DBMSG * msg);
int on_add_wave_index(void);
int on_add_tag(DBMSG * msg);
int on_read_type(DBMSG * msg);
int on_read_like(DBMSG * msg);
int on_read_folder(DBMSG * msg);
int on_read_pl(DBMSG * msg);
int on_read_albums(DBMSG * msg);
int on_read_audio_by_album(DBMSG * msg);
int on_read_album(DBMSG * msg);
int on_read_artists(DBMSG * msg);
int on_read_audio_by_artist(DBMSG * msg);
int on_read_artist(DBMSG * msg);

#endif